import dva from "dva";

import router from "./router";

import Global from "./model/global";
import menuChange from "./model/menuChange";

import "./index.css";

/**
 * 如果代码增加了一个key
 * 那么，这个key要对应的能够拿到，所以这个时候代码的优先级高
 *
 * 如果代码和本地缓存都有这个key，那么缓存的优先级高
 * @returns
 */
const initialState = () => {
  const global = localStorage.getItem("global");
  const localState = JSON.parse(global) || {};
  return { ...Global.state, ...localState };
};

// 1. 初始化dva
const app = dva({
  initialState: {
    global: initialState(),
  },
  onStateChange: (data) => {
    /**
     * 注意要传字符串
     */
    localStorage.setItem("global", JSON.stringify(data.global));
  },
});

// 挂载路由
app.router(router);

// 注意：如果使用了redux 的话要记得挂载
app.model(Global);
app.model(menuChange);

// 启动 come on 🚀
app.start("#root");
